home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
-
-
-
-
-
- ________________________________________________
- | SPIA |
- | An Interactive Guide To |
- | Signal Processing |
- | |
- | USER'S GUIDE |
- | |
- | Moonshadow Software |
- | 5016 Castlewood Drive |
- | San Jose, CA 95129 |
- | (408)-446-2459 |
- | |
- | (C) Moonshadow Software 1986,1987 |
- ------------------------------------------------
-
-
-
-
-
- License Information
-
- Non-registered users are granted a limited license to use SPIA on a
- trial basis for the purpose of determining whether SPIA is suitable
- for their needs. Use of SPIA, except for this limited purpose,
- requires registration. Use of non-registered copies of SPIA by any
- person, business, corporation, government agency or other entity
- is strictly forbidden.
-
- Registration permits a user the license to use SPIA on a single
- machine.
-
- All users are granted a limited license to copy SPIA only for the
- trial use of others subject to the above limitations, and also the
- following:
-
- * SPIA must be copied in unmodified form, complete with the
- full documentation (including this license information).
-
- * No fee, charge or other compensation may be accepted or requested
- by any licensee.
-
- * SPIA may not be distributed in conjunction with any other
- product.
-
- Operators of electronic bulletin board systems may post SPIA for
- downloading by their users only as long as the above conditions are met.
-
-
-
-
-
- WARRANTY
-
-
- Moonshadow Software makes no representations or warranties with
- respect to the contents hereof and specifically disclaims any
- implied warranties of merchantability or fitness for any
- particular purpose. Further, Moonshadow Software reserves the right
- to revise this publication and software and to make changes from
- time to time in the content hereof without obligation of
- Moonshadow Software to notify any person of such revision or
- changes.
-
- SPIA is a trademark of Moonshadow Software.
-
-
-
-
-
- ORDERING INFORMATION
-
-
- A SPIA registration licenses you to the use of the product on a
- regular basis. Registration includes mailed notification of
- updates and update privileges for a nominal fee. To register
- send
-
- * $79.95 which includes the typeset manual, telephone support, the
- latest version on disk, and update privileges.
-
- Please add $5 shipping, $10 outside U.S. CA residents add sales tax.
-
- In addition, evaluation disks are available for $10. These disks
- do not include registration.
-
- Please use the enclosed order form when placing an order.
-
- ORDERS OUTSIDE THE US: Please send checks drawn on US banks in US
- dollars. In addition, make sure $10 shipping is included for any
- items ordered.
-
-
-
-
-
- ORDER FORM
-
- Send to: Moonshadow Software
- 5016 Castlewood Drive
- San Jose, CA 95129
- (408)-446-2459
-
-
- Please send me the latest releases of:
-
-
- ____ SPIA Evaluation Disk....................... @ $ 10.00 ea $ ______
- (includes program and manual on disk, no registration)
-
-
- ____ SPIA Registration Package.................. @ $ 79.95 ea $ ______
- (includes registration, program, typeset manual,
- telephone support, update privileges)
-
- Subtotal ______
-
- (CA residents add sales tax) Tax ______
-
- Total $ ______
-
-
- Name: ____________________________________________________________
-
- Company: ____________________________________________________________
-
- Address: ____________________________________________________________
-
- ____________________________________________________________
-
- ____________________________________________________________
-
- Phone: _________________________
-
-
- Comments: ____________________________________________________________
-
- ____________________________________________________________
-
- ____________________________________________________________
-
- Where you heard about/
- received your copy: _____________________________________________________
-
-
-
-
-
-
- INTRODUCTION
-
- SPIA is a mathematical scratchpad for functions. SPIA provides an
- interactive environment in which to study functions (like sin, cos,
- etc.) and signal processing techniques (like Fourier transform,
- convolution, etc.). SPIA is easy to use (really!), and serves a
- variety of needs. From the high school student learning for the
- first time about graphing functions and trigonometry to the
- practicing engineer interested in the power spectrum of a function.
-
- SPIA is actually an interpretive language where instead of the scalar
- variables found in BASIC and FORTRAN one has "function" variables. As
- a result, one enters algebraic statements very similar to what would
- be used to manipulate equivalent functions on paper.
-
- The user is able to construct functions from that of a predefined set
- and manipulate them and examine the result graphically. SPIA uses
- algebraic logic.
-
- The following pages are an abbreviated form of the typeset manual
- available upon registration. SPIA is designed to be intuitive in
- nature, and we invite you to "jump in". SPIA works the way you might
- with paper and pencil.
-
- SPIA is a electronic scratchpad for mathematical functions and
- operations.
-
-
-
-
-
- INSTALLATION
-
- REQUIREMENTS
-
- SPIA requires an IBM PC/XT/AT/System/2 or compatible and a graphics
- adapter. SPIA also requires 256 K bytes of RAM. The graphics
- standards supported are:
-
- * Hercules monochrome
- * IBM Color Graphics Adapter (CGA)
- * IBM Enhanced Graphics Adapter (EGA)
- * IBM Video Graphics Array Adapter (VGA)
-
- Although SPIA does not require a math coprocessor (8087/80287/80387),
- if your machine has one it will use it. Because SPIA is very math
- intensive, a math coprocessor will improve its performance
- significantly. On an IBM PC/XT with no math coprocessor the time for
- a Fourier transform is about 20 sec.
-
- SPIA can be run from a floppy or hard disk.
-
-
- BACKUP COPIES
-
- Before configuring or installing SPIA on your computer, make a copy
- of the SPIA SHAREWARE distribution disk. We encourage you to make
- copies of this diskette to share with your colleagues.
-
- Once SPIA is configured for your computer the SPIA disk is customized
- and cannot be used on another computer without running the included
- RECONFG program. So to prevent confusion, please distribute the
- unconfigured original SPIA SHAREWARE distribution diskette.
-
-
- CONFIGURATION and INSTALLATION
-
- To configure and install SPIA on your computer simply insert the SPIA
- SHAREWARE distribution disk in drive A and type "CONFIG" (without the
- quotes). For example:
-
- A>CONFIG [Enter]
-
- The floppy disk is customized for your computer and if requested a
- customized copy is also transferred to the hard drive in C:\SPIA.
-
- RUNNING SPIA
-
- Once SPIA has been configured it is run by typing RUNSPIA. For a
- floppy based system simply insert the configured diskette in drive A
- (or B) and type "A:[Enter]" and then "RUNSPIA".
-
- On a hard drive one needs to first change to the SPIA subdirectory
- and then type RUNSPIA. For example:
-
- C>CD \SPIA [Enter]
- C>RUNSPIA [Enter]
-
-
-
-
-
- USING SPIA
-
- SPIA is essentially an interpretive programming language, in which
- the variables are functions (vectors) and the operators are the basic
- mathematical operations with a few special ones thrown in. By taking
- the supplied functions and operators (and a little ingenuity) one can
- custom build an enormous array of functions upon which to experiment.
- The commands which invoke these functions and operations are entered
- in the command window at the bottom of the screen. The commands are
- pretty much what one might write on paper to algebraically set up the
- mathematical operation. The commands and functions are detailed in
- the command summary section.
-
- SPIA's working screen is divided into 3 functional windows: The
- display window, the message window, and the command line window.
-
- ________________________________________________
- | |
- | |
- | |
- | DISPLAY WINDOW |
- | |
- | |
- | |
- ------------------------------------------------
- | MESSAGE WINDOW |
- ------------------------------------------------
- | COMMAND WINDOW |
- ------------------------------------------------
-
-
-
- THE DISPLAY WINDOW. It is here that help screens are displayed and
- the graphics representation of the functions are displayed. When
- displaying functions, there are 3 work areas used: A, B, and C. This
- allows the viewing of 3 functions at a time. Each function has as
- its range -2 to +2, with 0 marked on the x axis. The ordinate range
- is marked on the y axis each time a function is displayed.
-
- Unless specified all functions and their resulting manipulations are
- placed in the A work area for display. In a programming sense it is
- assigned to A. For example:
-
- SINX + COSX
-
- gets the predefined functions sin(x) and cos(x), adds them together
- and places the result in the A work area. This is equivalent to
- saying
-
- A = SINX + COSX
-
-
-
-
-
- USING SPIA - continued-
-
- Once a work area has been assigned a result, it can be used in
- subsequent expressions, for example
-
- ABS(A)
-
- takes the absolute value of A, which currently has the result of
- SINX+COSX. Notice too, that this expression places the results of
- ABS(A) in A! (since there is no explicit assignment) So, one can
- recursively assign work areas, much like that of variables in BASIC
- and FORTRAN. To place the results in the other work areas simply
- make the assignments, like so
-
- A = SINX
- B = SINX + COSX
- C = ABS(B)
-
- The above command sequence would allow us to see the progression of
- our operations graphically, instead of writing over our intermediate
- steps.
-
- One other aspect of the display work areas bears mentioning - the
- display of imaginary functions. Since SPIA can operate with complex
- functions (ie. functions with both real and imaginary parts) the
- display area is structured so that one can display either the real or
- imaginary parts independently. This is accomplished by typing either
- IA, IB, and IC in the command window to view the imaginary parts of
- the complex functions A, B or C.
-
- IA, IB and IC are also used to view the phase parts of A, B and C if
- the functions have been converted to their amplitude/phase form by
- the AMP() function.
-
- More about complex functions later.
-
-
- THE MESSAGE WINDOW. As its name implies, this window provides you
- with messages pertaining to the program's operation. There are 4
- types of messages:
-
- Error messages
- Informational messages
- Prompts
- Mode messages
-
- THE COMMAND LINE WINDOW. This is a three line scrolling window which
- displays your commands.
-
-
-
-
-
- GENERAL NOTES
-
- SPIA has a dictionary of functions (nouns) and operators (verbs).
- With these it is possible to construct new functions upon which
- further operations can be carried out. The command lines are entered
- and parsed one line at a time based on a set of precedence rules.
- The available functions, operators, and commands are described in
- detail on the following pages and a quick summary can be invoked
- during program operation by typing HELP. SPIA is meant to be
- exploratory in nature, so don't hesitate just trying things out.
-
- The functions in SPIA are defined over the range of x = -2 to x = +2,
- eg. SINX, the sin(pi*x), ranges over -2pi to +2pi. Each function
- contains 256 points.
-
-
- PARSING
-
- The parser in SPIA will parse (that is grammatically resolve the
- command line into a collection of functions and operations on those
- functions) most reasonable algebraic command lines. If there is any
- doubt as to the order of operations, the liberal use of parentheses
- will force the order to your liking, eg:
-
- B = A + B * C will be done as A + (B*C)
-
- B = (A + B) * C will be done as (A+B) * C
-
- The precedence of operators is:
-
- 'unary' > 'binary' = '*' = '/' > '+' = '-'
-
- where unary refers to operators with only one argument, like FT(A),
- IFT(A), SQRT(A), ABS(A), and binary refers to operators like CONV and
- CORR that require two (A CONV B). When operator precedence is equal,
- the left most operator has precedence.
-
- If you are unsure of how the computer interpreted your command -
- watch the message window. This will reflect the order of operation.
- For example A+B*C will flash in succession "evaluating product",
- "evaluating sum".
-
- Like english (or at least like most programming languages) SPIA has a
- grammar, and while it is reasonably easy to trip it up, it is also
- reasonably easy to deliver commands that do what you had wanted!
- Somewhere in between an adventure game and a calculator.
-
- Currently, the unary minus is not supported. It is easy to work
- around. For example:
-
- (0 - 1) * GAUSS
-
-
-
-
-
- GENERAL NOTES - continued -
-
- COMPLEX ARITHMETIC
-
- Because Fourier Transforms generate complex functions, there is the
- ability to manipulate and display these complex functions in SPIA.
- There are two modes within SPIA: COMPLEX ON and COMPLEX OFF. These
- two commands can be typed to force the mode of arithmetic
- calculation. Basically if complex arithmetic is on, then addition,
- subtraction, multiplication and division take into account the
- imaginary parts of the functions. Complex arithmetic is
- automatically turned on when taking the FT of some function, and it
- is automatically turned off when the inverse FT is taken. Again,
- these modes can be manually invoked.
-
- It is important when doing arithmetic in the frequency domain that
- the complex mode be on, otherwise the imaginary component of the
- result of the operation always has a zero component.
-
-
-
-
-
- COMMAND SUMMARY
-
- MATHEMATICAL OPERATIONS
- -----------------------
- ABS(A)......the absolute value of the function in A.
- AMP(A)......converts real/imaginary to amplitude phase of A.
- CONJ(A).....the complex conjugate of A.
- A CONV B....performs the convolution integral of A with B.
- A CORR B....performs the cross correlation integral of A with B,
- DERIV(A)....the difference between the ith and (i+1)th points
- for all points, with the final point being equal to
- the differential before it. Hence, errors can
- accumulate in the last point.
- EXP(A)......the exponential of each point in A.
- FORCE(A)....forces the endpoints of A = 0, thereby eliminating end
- effects in the Fourier transform.
- FT(A).......the Fourier Transform of A. The imaginary part can
- be displayed by IA. Complex arithmetic mode
- automatically turned on.
- IFT(A)......the inverse Fourier Transform of A. Complex mode turned off.
- INTEG(A)....the integral of A.
- LOG(A)......the log base 10 log of each point in A.
- LN(A).......the log base e of each point in A.
- MIRROR(A)...the right side of a function mirrored into the eft.
- MSHIFT(A)...shifts the function A left (minus) by 10%.
- RE(A).......converts function from amplitude/phase space to
- real/imaginary.
- SHIFT(A)....shifts the function A right (plus) by 10%.
- SMOOTH(A)...3 point smooth of A.
- SQRT(A).....the square root of each point in A.
- TEN(A)......the power of A to the base 10, for each point in A.
- A + B.......sums each point of A and B respectively.
- A - B.......subtracts each point of B from each point of A.
- A * B.......multiplies each point of A and B respectively.
- A / B.......divides each point of A by each point of B, respectively.
- A ** n......takes each point of A and raises it to the n-th power.
- Note, number can be any real number, but it cannot be
- another function. Ie. SINX**COSX is not allowed.
- A = B.......takes each point in B and assigns it to A.
-
-
-
-
-
- COMMAND SUMMARY - continued -
-
- DEFINED FUNCTIONS
- -----------------
-
- n...........any number can be input as a function, this has the
- effect of assigning each point of that function to be
- that number. eg. B=17.5 assigns each point of B to
- be 17.5, (SINX+1)/NOISE*10 adds 1 (one) to each point
- of the function SINX, and divides it by the function
- NOISE times 10.
- A,B,C.......these are user defined functions, having zero values
- until assigned. B and C must be explicitly assigned,
- as in B=COSX, but A is implicitly assigned by typing
- COSX.
- IA,IB,IC....these are the imaginary counterparts to A,B, and C.
- COSX........cosine of pi*x where x:-2 to +2
- DEL0........delta function at x=0
- EXPMX.......the exponential of the absolute value of x:-2 to +2
- exp(-abs(x)).
- GAUSS.......the gaussian. defined as exp(-pi*(x**2))
- HEAVY.......the Heavyside step function, defined as zero for x<0
- and 1 for x>0.
- III.........sampling function, delta functions at regular intervals.
- II..........pair of delta functions at x=1,-1.
- LOREN.......the lorentzian, mean of zero, halfwidth of 1.
- NOISE.......pseudo random noise of intensity -0.1 to +0.1
- (approximately 10% of many of the above functions).
- NOTCH.......defined as 1 for abs(x) > 0.1, and 0 for abs(x) < 0.1,
- excellent for applying filers to FT's.
- RECT........rectangle function, 0 for abs(x) > .5, 1 for abs(x) <= .5
- SIGN........defined as -1 for x<0 and +1 for x>=0.
- SINX........sin(pi*x) over -2pi to +2pi. Also supported are SIN2X
- thru SIN9X, where SIN9X is sin(9*pi*x)
- SINCX.......defined as sin(pi*x)/(pi*x), sinc(0) = 1. Also SINC2X
- thru SINC9X.
- TRI.........the triangle function, defined as 1-abs(x) for abs(x) < 1
- and 0 elsewhere.
- X...........ramp from -1 to +1.
-
-
-
-
-
-
- COMMAND SUMMARY - continued -
-
- COMMANDS
- --------
-
- COMPLEX [ON/OFF]..used to control complex arithmetic mode, when
- complex mode is on the operations +,-,*, and / are
- done with both the imaginary and real parts of the
- functions. Note the complex annunciator is turned on
- in complex mode.
- EXIT..............exit program.
- FAST [ON/OFF].....determines if convolution/correlation is done with
- integer arithmetic (fast) or floating point (slow).
- Functions must be prepared before use by
- multiplying by the desired precision. Eg:
- 100*SINX allows fast convolution to within 3
- significant figures.
- FILE..............reads in user acquired data files. Text files
- (ASCII) can be read, where the numbers are one per
- line (with no commas etc.) and can be integer,
- floating point or exponential, eg:
- 32
- .73
- 8.1E-05
- HELP..............displays a quick summary of commands.
- PLOT..............plots screens.
- PRINT.............prints the screen.
- RESTORE...........restores previously saved functions.
- SAVE..............saves current set of functions.
- SUPPRESS [ON/OFF].suppresses digital error propagation. Default is on.
- QUIT..............same as exit.
-
-
-
-
-
- EXAMPLES
-
- FOURIER FILTERING.
-
- One of the novel techniques available in Fourier space is frequency
- filtering. In this case we will filter out the high frequency
- component from our signal. The theory being that the low frequency
- information is what the signal of interest is comprised of and the
- high frequency information is purely noise. The truth of this
- statement can vary drastically from situation to situation, lets look
- at two of them.
-
- CASE I
-
- (1) Create a gaussian with noise, place it in C for reference
-
- GAUSS + NOISE (places the result in A)
- C = A
-
- (2) Take the transform of the resultant function, lets also save it
- for further manipulation
-
- FT(A)
- B = A
-
- (3) Apply a notch filter to the transform, create it first in A, then
- multiply the transform, B, by it (this applies the filter) and
- finally take the inverse transform.
-
- 1 - NOTCH (like a very narrow square function)
- A * B (note this is complex multiplication)
- (A now holds the filtered transform)
- IFT(A)
-
- You'll find that the resultant function in A is a smoothed version of
- GAUSS+NOISE in C. What would have happened if the filter function to
- be applied was RECT? Also try adding 10*NOISE, instead of just NOISE,
- to GAUSS, to give a signal to noise ratio of 1:1 and repeat the
- filter exercise.
-
-
-
-
- EXAMPLES - continued -
-
- CASE II
-
- (1) Let's apply this technique to another function. Create a train of
- peaks like so:
-
- SIN5X**10
-
- (2) Reproducing the steps (1) to (3) in case I, only using this function
- as the base
-
- A + NOISE
- C = A
- FT(A)
- B = A
- (1 - NOTCH)*B
- IFT(A)
-
- Apparently not an appropriate filter to apply in this case, due
- to the higher frequency content of our desired signal! Try it
- with RECT as the filter function.
-
- Note the above examples could have been created with far fewer steps
- by simply applying the operations successively:
-
- IFT((1 - NOTCH)*B)
-
- This concludes the abbreviated on-disk SPIA manual.
-
- Please pass this software on. And if you find SPIA useful, please do
- register it. Remember, registration pays for the continuing
- development of this software and software like this.
-
- Thank you for your support.
-